package com.exam.api.common.poster;


import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * Image
 */
@Schema(description = "Image")
@EqualsAndHashCode(callSuper = true)
@Data
public class Image extends ZIndex {

    /**
     * x 值
     */
    @Schema(description = "x 值")
    @NotNull(message = "图片X坐标不能为空")
    private Integer x;

    /**
     * y 值
     */
    @Schema(description = "y 值")
    @NotNull(message = "图片Y坐标不能为空")
    private Integer y;

    /**
     * 宽度
     */
    @Schema(description = "宽度")
    @NotNull(message = "图片宽度不能为空")
    private Integer width;

    /**
     * 高度
     */
    @Schema(description = "高度")
    @NotNull(message = "图片高度不能为空")
    private Integer height;

    /**
     * 圆角
     */
    @Schema(description = "圆角")
    @Min(value = 0, message = "图片圆角不能小于0")
    private Integer borderRadius = 0;

    /**
     * url
     */
    @Schema(description = "url")
    @NotEmpty(message = "图片url不能为空")
    private String url;

    /**
     * 备用url
     */
    @Schema(description = "备用url")
    private String resUrl;

    /**
     * 是否居中
     */
    @Schema(description = "是否居中")
    private Boolean center = false;


    /**
     * 是否缩放裁剪图像
     */
    @Schema(description = "是否缩放裁剪图像")
    private Boolean crop = false;

    /**
     * 缩放裁剪图像宽度
     */
    @Schema(description = "缩放裁剪图像宽度")
    private Integer cropTargetWidth;

    /**
     * 缩放裁剪图像高度
     */
    @Schema(description = "缩放裁剪图像高度")
    private Integer cropTargetHeight;

    /**
     * 缩放模式  默认 ：WidthHeight (Origin 原始比例，不缩放  Width 指定宽度，高度按比例自动计算 Height 指定高度，宽度按比例自动计算 WidthHeight 指定高度和宽度，强制缩放)
     */
    @Schema(description = "缩放模式  默认 ：WidthHeight (Origin 原始比例，不缩放  Width 指定宽度，高度按比例自动计算 Height 指定高度，宽度按比例自动计算 WidthHeight 指定高度和宽度，强制缩放)")
    @NotBlank
    private String zoomMode = "WidthHeight";
}
